package cron

import (
	"log"
	"time"

	"gitee.com/xgotool/sqlite-logs-more/service/rootdb"
	"gitee.com/xiaoyutab/xgotool/xgodb"
)

// 日志压缩
func logTar() {
	// 获取后台配置的压缩天数
	if xgodb.GetInt("RUN_TAR_DAYS") <= 0 {
		return
	}
	// 获取小于该时间ID且未进行压缩的记录
	conn, err := rootdb.Connect()
	if err != nil {
		log.Println("数据库连接失败", err.Error())
		return
	}
	file, files := rootdb.File{}, []rootdb.File{}
	err = conn.Table(file.TableName()).
		Where("id < ?", time.Now().AddDate(0, 0, 0-int(xgodb.GetInt("RUN_TAR_DAYS"))).UnixNano()). // 时间
		Where("min_id > 0").Where("max_id > 0").                                                   // 写入完成
		Where("is_deleted", 0).                                                                    // 未删除
		Order("id ASC").
		Find(&files).
		Error
	if err != nil {
		log.Println("文件查询失败", err.Error())
		return
	}
	if len(files) == 0 {
		log.Println("超期日志为空")
		return
	}
	for i := 0; i < len(files); i++ {
		if err := rootdb.P7z(files[i].Id); err != nil {
			log.Println("文件压缩失败", err.Error(), files[i].Id)
			continue
		}
		if err := rootdb.P7delete(files[i].Id); err != nil {
			log.Println("文件删除失败", err.Error(), files[i].Id)
		}
	}
}
